/*---------------------------------------------------------------------------
	ZaRan	-	A Totallly Automatic CFD Software
	Copyright (C) ,Since 2020
-------------------------------------------------------------------------------
License
	This file is part of ZaRan.

!	@file	zaran_grid.h
!	@brief	the purpose of this file.
!	@author	Chen Jie.
\*---------------------------------------------------------------------------*/
#pragma once
#include"multigrid.h"
// ZaranGrid is a type of MultiGrid
class ZaranGrid :public MultiGrid
{
public:
	ZaranGrid() { SetGridNum(2); }
	void SetGrid(Grid& background, MultiGrid& unstruct_, const vector<int>& bcakground_node_tag);
public:
	Grid* GetBackgroundGrid() { return GetGrid(0); }
	vector<int>* GetBackgroundGridNodeTagVec() { return &backgroundNodeTag_; }
	vector<int>* GetBackGroundGridElementTagVec() { return &backgroundElementTag_; }
	Grid* GetUnstructGrid() { return GetGrid(1); }
	void SetInterNode();
	void OutGrid(std::ostream& fout);

private:
	//	background grid, now it's struct grid
	//	it will not change, just for back ground compute
	vector<int>backgroundNodeTag_;
	vector<int>backgroundElementTag_;
};